#include "../comm.h"
class Solution {
public:
    int longestAwesome(string s) {
        // 长度是奇数并且有一个数字的个数是奇数
        // 长度是偶数并且所有数字的个数都是偶数
        unordered_map<int, int> hsh;
        hsh[0] = -1;
        int now = 0;
        int mx = 1;
        for(int i = 0; i < s.size(); ++i)
        {
            int e = s[i] - '0';
            now ^= (1 << e);
            // cout << now << endl;
            if(hsh.count(now) && (i - hsh[now]) % 2 == 0)
                mx = max(mx, i - hsh[now]);

            for(int t = 0; t < 10; ++t)
            {
                int tmp = now ^ (1 << t);
                if(hsh.count(tmp) && (i - hsh[tmp]) % 2)
                    mx = max(mx, i - hsh[tmp]);
            }
            // cout << i << ' ' << mx << endl;
            if(!hsh.count(now))
                hsh[now] = i;
        }
        return mx;
    }
};